package com.briup.day08;

/**
 * 父类
 * @author lining
 * @date 2024/1/17 9:18
 */
public class SuperClass {
    public String name = "super";
    public int num = 1;
    public void run(){
        System.out.println("superclass....run");
    }


    public static void main(String[] args) {
        SubClass s = new SubClass();
        s.method();
    }
}

class SubClass extends SuperClass{
    public String name = "sub";
    //public int num = 1;
    public void run(){
        System.out.println("subclass....run");
    }
    public void method(){
        System.out.println(this.name);//输出sub
        System.out.println(super.name);//输出super 调用父类的属性
        this.run();//this 子类对象
        super.run();//调用父类的方法 super表示父类对象
        System.out.println(num);
        say(2000);
    }
    //在子类方法中访问一个变量，会根据就近原则：
    public void say(int num){
        {
            System.out.println(num);//输出 不确定 2000
            System.out.println(this.num);//输出 1
        }
        {
            //int num = 1; //局部变量
            System.out.println(num);//输出？就近： 局部 成员 父类成员
        }
    }
    public void method2(){
        System.out.println(this);//输出结果？子类对象地址值
        //super调用父类（包括间接父类Object）方法
        System.out.println(super.toString());
        System.out.println(super.hashCode());
    }
    public static void method3(){
//        System.out.println(super.name); //代码1 编译错误
//        System.out.println(this.name);//代码2 编译错误
    }
}